﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DAL;
using BLL;
using BOL;
using System.Data.Linq;
using System.IO;
using System.Drawing.Imaging;
using DevComponents.DotNetBar;
using DevComponents.AdvTree;

namespace QuanLyHangXeKhach
{
    public partial class frmThongKeHoatDong : UserControl
    {
        Thongke tk = new Thongke();
        DieuKhien dk = new DieuKhien();
        public frmThongKeHoatDong()
        {
            InitializeComponent();
        }

        public void taocottrenadv()
        {
            // advTree1.colum
        }

        #region Điều khiển đóng/mở form
        private DieuKhien _Commands;
        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public DieuKhien Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    DieuKhien oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(DieuKhien oldValue, DieuKhien newValue)
        {
            if (newValue != null)
            {
                btndong.Command = newValue.dongfrmtk;

            }
            else
            {
                btndong.Command = null;

            }
        }

        #endregion

        List<double> lst = new List<double>();
        private void frmThongKeHoatDong_Load(object sender, EventArgs e)
        {
            //MessageBoxEx.Show(tk.demtongdoanhthu(dk.catngay("01/01/2011"), dk.catngay("01/01/2014")).ToString());
            cobthongke.Items.Add("Thống kê hoạt động");
            cobthongke.Items.Add("Thông kê doanh thu");

            cobthongke.WatermarkText = "Chọn hình thức thống kê";
            cobtieuchi.WatermarkText = "Chọn tiêu chí thông kê";
            cobchitiet.WatermarkText = "Thống kê chi tiết";


            columnHeader1.Text = "";
            columnHeader2.Text = "";
            columnHeader3.Text = "";
            advTree1.Refresh();


            //lst.Add(35);
            //lst.Add(65);

            //microChart1.DataPoints = lst;

        }

        public void xoatrang()
        {
            cobtieuchi.Items.Clear();
            cobtieuchi.Text = "";

            cobchitiet.DataSource = null;
        }

        private void cobthongke_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cobthongke.Text == "Thống kê hoạt động")
            {
                xoatrang();
                cobtieuchi.Items.Add("Lượng khách theo xe");
                cobtieuchi.Items.Add("Lượng khách theo tuyến");

                columnHeader2.Text = "Thời gian";
                columnHeader3.Text = "Lượng khách";
                advTree1.Refresh();
            }
            else
            {
                xoatrang();
                cobtieuchi.Items.Add("Doanh thu theo xe");
                cobtieuchi.Items.Add("Doanh thu theo tuyến");

                columnHeader2.Text = "Thời gian";
                columnHeader3.Text = "Doanh thu";

                advTree1.Refresh();
            }
        }

        private void cobtieuchi_SelectedIndexChanged(object sender, EventArgs e)
        {

            if (cobtieuchi.Text == "Lượng khách theo xe" || cobtieuchi.Text == "Doanh thu theo xe")
            {
                cobchitiet.DataSource = tk.laybienso();
                cobchitiet.DisplayMember = "bienso";
                cobchitiet.ValueMember = "maxe";
                cobchitiet.Text = "Tất cả các xe";
            }
            else if (cobtieuchi.Text == "Lượng khách theo tuyến" || cobtieuchi.Text == "Doanh thu theo tuyến")
            {
                cobchitiet.DataSource = tk.laytuyenduongtk();
                cobchitiet.DisplayMember = "tuyenduong";
                cobchitiet.ValueMember = "matd";
                cobchitiet.Text = "Tất cả các tuyến";
            }

            if (cobtieuchi.Text == "Lượng khách theo tuyến")
            {
                columnHeader1.Text = "Tuyến đường";
                columnHeader2.Text = "Thời gian";
                columnHeader3.Text = "Lượng khách";

                advTree1.Refresh();
            }
            else if (cobtieuchi.Text == "Lượng khách theo xe")
            {
                columnHeader1.Text = "Xe";
                columnHeader2.Text = "Thời gian";
                columnHeader3.Text = "Lượng khách";
                advTree1.Refresh();
            }

            else if (cobtieuchi.Text == "Doanh thu theo xe")
            {
                columnHeader1.Text = "Xe";
                columnHeader2.Text = "Thời gian";
                columnHeader3.Text = "Doanh thu";

                advTree1.Refresh();
            }

            else if (cobtieuchi.Text == "Doanh thu theo tuyến")
            {
                columnHeader1.Text = "Tuyến đường";
                columnHeader2.Text = "Thời gian";
                columnHeader3.Text = "Doanh thu";

                advTree1.Refresh();
            }

        }


        private Node CreatenoidenRow(string ten, string thoigian, string soluong)
        {
            Node node = new Node(ten);
            node.Cells.Add(new Cell(thoigian));
            node.Cells.Add(new Cell(soluong));
            return node;
        }

        int tong;
        private void buttonX1_Click(object sender, EventArgs e)
        {

            if (cobchitiet.Text == "" || cobthongke.Text == "" || cobtieuchi.Text == "")
                MessageBoxEx.Show("Nhập đầy đủ thông tin trước khi tiếp tục", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
                try
                {
                    if (dk.catngay(mskdenngay.Text) < dk.catngay(msktungay.Text))
                        MessageBoxEx.Show("Ngày nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception) { MessageBoxEx.Show("Ngày nhập vào không hợp lệ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); }


            if (cobtieuchi.Text == "Lượng khách theo xe")
            {
                if (cobchitiet.Text == "Tất cả các xe")
                {
                    tong = tk.demtongkhach(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkeluongkhach> lktheoxe = tk.tklktheoxe(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, row.soluong));
                    }
                }
                else
                {
                    //MessageBoxEx.Show(cobchitiet.SelectedValue.ToString());
                    tong = tk.demtongkhach(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkeluongkhach> lktheoxe = tk.tklktheoxe(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text), cobchitiet.SelectedValue.ToString());
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, row.soluong));
                    }
                }
            }
            else if (cobtieuchi.Text == "Lượng khách theo tuyến")
            {
                if (cobchitiet.Text == "Tất cả các tuyến")
                {
                    tong = tk.demtongkhach(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkeluongkhach> lktheoxe = tk.tklktheotuyen(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, row.soluong));
                    }
                }
                else
                {
                    tong = tk.demtongkhach(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkeluongkhach> lktheoxe = tk.tklktheotuyen(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text), cobchitiet.SelectedValue.ToString());
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, row.soluong));
                    }
                }
            }
            else if (cobtieuchi.Text == "Doanh thu theo xe")
            {
                if (cobchitiet.Text == "Tất cả các xe")
                {
                    tong = tk.demtongdoanhthu(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkedoanhthu> lktheoxe = tk.tkdttheoxe(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, String.Format("{0:0,0 vnđ}", row.doanhthu)));
                    }
                }
                else
                {
                    tong = tk.demtongdoanhthu(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkedoanhthu> lktheoxe = tk.tkdttheoxe(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text), cobchitiet.SelectedValue.ToString());
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, String.Format("{0:0,0 vnđ}", row.doanhthu)));
                    }
                }
            }
            else if (cobtieuchi.Text == "Doanh thu theo tuyến")
            {
                if (cobchitiet.Text == "Tất cả các tuyến")
                {
                    tong = tk.demtongdoanhthu(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    List<thongkedoanhthu> lktheoxe = tk.tkdttheotuyen(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text));
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text,String.Format("{0:0,0 vnđ}", row.doanhthu)));
                    }
                }
                else
                {
                    List<thongkedoanhthu> lktheoxe = tk.tkdttheotuyen(dk.catngay(msktungay.Text), dk.catngay(mskdenngay.Text), cobchitiet.SelectedValue.ToString());
                    advTree1.Nodes.Clear();
                    foreach (var row in lktheoxe)
                    {
                        advTree1.Nodes.Add(CreatenoidenRow(row.ten, msktungay.Text + " => " + mskdenngay.Text, String.Format("{0:0,0 vnđ}", row.doanhthu)));
                    }
                }
            }
        }

        private void advTree1_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)
        {
            try
            {
                Node node = e.Node;
                float bien;
                double bien1;
                if (advTree1.Nodes.Count != 0)
                {
                    if (cobtieuchi.Text == "Lượng khách theo xe")
                    {
                        if (cobchitiet.Text == "Tất cả các xe")
                        {

                            lst.Clear();
                            microChart1.DataPoints = null;
                            bien = int.Parse(node.Cells[2].Text);
                            bien1 = Math.Round((bien / tong * 100));
                            lst.Add(bien1);
                            lst.Add(100 - bien1);
                            microChart1.DataPoints = lst;
                        }
                        else
                        {

                        }
                    }
                    else if (cobtieuchi.Text == "Lượng khách theo tuyến")
                    {
                        if (cobchitiet.Text == "Tất cả các tuyến")
                        {
                            lst.Clear();
                            microChart1.DataPoints = null;
                            bien = int.Parse(node.Cells[2].Text);
                            bien1 = Math.Round((bien / tong * 100));
                            lst.Add(bien1);
                            lst.Add(100 - bien1);
                            microChart1.DataPoints = lst;
                        }
                        else
                        {

                        }
                    }
                    else if (cobtieuchi.Text == "Doanh thu theo xe")
                    {
                        if (cobchitiet.Text == "Tất cả các xe")
                        {
                            lst.Clear();
                            microChart1.DataPoints = null;
                            bien = int.Parse(node.Cells[2].Text.Replace("vnđ", "").Replace(",",""));
                            bien1 = Math.Round((bien / tong * 100));
                            lst.Add(bien1);
                            lst.Add(100 - bien1);
                            microChart1.DataPoints = lst;
                        }
                        else
                        {

                        }
                    }
                    else if (cobtieuchi.Text == "Doanh thu theo tuyến")
                    {
                        if (cobchitiet.Text == "Tất cả các tuyến")
                        {
                            lst.Clear();
                            microChart1.DataPoints = null;
                            bien = int.Parse(node.Cells[2].Text.Replace("vnđ", "").Replace(",", ""));
                            bien1 = Math.Round((bien / tong * 100));
                            lst.Add(bien1);
                            lst.Add(100 - bien1);
                            microChart1.DataPoints = lst;
                        }
                        else
                        {

                        }
                    }
                }
            }

            catch (Exception)
            { }
        }

    }
}

            
        
    

